GKE Pub/Sub通知訊息到DC

前言

本來以爲不需要,但GKE有時就會幫你升級master的版本,
神不知鬼不覺,就算用靜態版本也是。
雖然是不會影響到線上服務,
但還是最好知道一下是什麼時候升級的。

正文

  1. Pub/Sub建立一個主題
    161-fig.1.jpg

  2. GKE的叢集設定開啓通知,並選擇剛剛建立的主題
    161-fig.2.jpg

  3. 建立Cloud Function
    161-fig.3.jpg
    環境選『第二代』,函式名稱自己命名。
    觸發條件,『允許未經驗證的叫用』,再選擇 ADD TRIGER裏面的『Pub/Sub trigger』
    161-fig.4.jpg
    選擇剛剛建立的Pub/Sub主題
    161-fig.5.jpg
    在連線的地方,可選擇僅允許內部流量即可。

  4. 建立程式碼
    161-fig.6.jpg
    選擇Go 1.20 ,進入點改成 sendDiscord
    原始碼到pubsub notify複製 function.go的程式。

  5. 測試
    161-fig.7.jpg
    觸發GKE的升級後,就會發送訊息到Discord上面。

相關資訊

Pub/Sub價格

在每個日曆月,結算帳號的 Message Delivery Basic SKU 的前 10 GiB 吞吐量免費

ref. Pub/Sub 價格

Pub/Sub架構

161-fig.8.jpg
ref. 什麼是 Pub/Sub?

The request was not authenticated.

The request was not authenticated. Either allow unauthenticated invocations or set the proper Authorization header. Read more at https://cloud.google.com/run/docs/securing/authenticating Additional troubleshooting documentation can be found at: https://cloud.google.com/run/docs/troubleshooting#unauthorized-client

如果沒在 第三步驟,選擇『允許未經驗證的叫用』,事後需改到cloud run修改安全性。
161-fig.9.jpg
從cloud function的連結到cloud run

161-fig.10.jpg
到安全性,將驗證改成『允許未經驗證的叫用』。
如果你仍然想要用需要驗證,
可能需要研究下,目前只允許內部流量調用。

MessagePublishedData

pub/sub 事件的組成部分

{
  "subscription": "projects/test-project/subscriptions/my-subscription",
  "message": {
    "attributes": {
      "attr1":"attr1-value"
    },
    "data": "dGVzdCBtZXNzYWdlIDM=",
    "messageId": "message-id",
    "publishTime":"2021-02-05T04:06:14.109Z",
    "orderingKey": "ordering-key"
  }
}